package com.linys.scala.study.caracc

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object SparkCarAccCount {
  def main(args: Array[String]): Unit = {
    /**
      * 初始化环境
      */
    // 创建配置文件对象
    val conf: SparkConf = new SparkConf()
    // 配置应用程序名称
    conf.setAppName("sparkcaracccount")
    // 配置运行模式，IDEA下必须为local模式
    // local是调用一个线程来运行该job
    // local[2]是调用两个线程来运行该job
    // local[*]是调用当前所有空闲的线程来运行该jobmaven-shade-plugin
    conf.setMaster("local[2]")
    // Spark的上下文对象，也称为集群的入口类
    val sc: SparkContext = new SparkContext(conf)

    // 获取数据
    val cars: RDD[String] = sc.textFile("dir/DataSource/CarAcc.txt")

    val lines: RDD[Array[String]] = cars.map(_.split("\\|"))
    val tupRDD: RDD[(String, String, String)] = lines.map(x => (x(1), x(4), x(3)))

    // 结果输出
    //sorted.collect.foreach(println) // foreach是Scala的方法
    //sorted.foreach(println) // foreach是Spark提供的api
    println(tupRDD.collect.toBuffer)


    // 释放sc资源
    sc.stop


  }
}
